package sf01.studentmngmsystem.mapper;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import sf01.studentmngmsystem.entity.Student;

import java.util.List;

@Mapper
public interface StudentMapper {
    
    List<Student> findStudentsWithPagination(
        @Param("offset") int offset,
        @Param("size") int size,
        @Param("name") String name,
        @Param("major") String major,
        @Param("classNumber") String classNumber,
        @Param("sortField") String sortField,
        @Param("sortOrder") String sortOrder
    );
    
    int countStudents(
        @Param("name") String name,
        @Param("major") String major,
        @Param("classNumber") String classNumber
    );
    
    Student findById(@Param("id") Long id);
    
    List<Student> findByCondition(
        @Param("name") String name,
        @Param("major") String major,
        @Param("classNumber") String classNumber
    );
    
    void insert(Student student);
    
    void update(Student student);
    
    void deleteById(@Param("id") Long id);
    
    /**
     * 批量删除学生（优化版）
     */
    void batchDeleteByIds(@Param("ids") List<Long> ids);
    
    /**
     * 查询所有学生（用于导出）
     */
    List<Student> findAllForExport(
        @Param("name") String name,
        @Param("major") String major,
        @Param("classNumber") String classNumber
    );
    
    /**
     * 根据邮箱或手机号查找学生
     * @param account 账号（邮箱或手机号）
     * @return 学生对象
     */
    Student findByEmailOrPhone(@Param("account") String account);
}